home *** CD-ROM | disk | FTP | other *** search
/ Softwarová Záchrana 3 / Softwarova-zachrana-3.bin / Xteq X-Setup / xqdcXSP-Setup-EN.exe / {app} / plugins / XQ Win95 Start Menu 3.xpl < prev    next >
Text File  |  2004-01-30  |  8KB  |  282 lines

  1. "FILE"="Xteq Systems X-Setup Plugin 6.0"
  2. "TYPE"="9"
  3. "COUNT"="1"
  4. "UIPATH 1"="Appearance\Start Menu\Windows 95"
  5. "UIPATH 2"="Appearance\Start Menu\Windows NT"
  6. "UIPATH 3"="Appearance\Start Menu\Windows 98"
  7. "UIPATH 4"="Appearance\Start Menu\Windows 2000"
  8. "UIPATH 5"="Appearance\Start Menu\Windows ME"
  9. "NAME"="Visible Items in Start->Find"
  10. "LANGUAGE"="VBScript"
  11. "VERSION"="3.10"
  12. "OSVERSION"="11111"
  13. "TEXT 1"="dⁿdel dumm"
  14. "DESCRIPTION 1"="This plug-in lets you control which options are shown on the Find menus on the Start Menu and in Windows Explorer. These icons are all part of Windows or Internet Explorer."
  15. "DESCRIPTION 2"="To show an option on the menu, enable it, otherwise disabling the option will hide it."
  16. "DESCRIPTION 3"="Please note that this list maybe shows activated entires than are not visibile in the find menu. These are entries that perform a validation if it's usefull to show them or not. For example, the "Search for Computers..." will only be visible if you are connected to a network. If you are using a stand-alone machine, it will hide itself automatically."
  17. "DESCRIPTION 4"="Important #1: If 'Files or Folders' is hidden, 'Computer' will also be hidden!"
  18. "DESCRIPTION 5"="Important #2: Disabling all items will lead to an empty menu being displayed!"
  19. "DESCRIPTION 6"="Important #3: These changes apply to ALL users on this machine!"
  20. "COMMENT 1"="Bloody complicated plug-in!!!"
  21. "COMMENT 2"="Based on plug-in by Neil R. Turner (totalxs@hotmail.com)"
  22. "COMMENT 3"="Thanks to Little Dave [sirturque@bigfoot.com] for the bug notice!"
  23. "AUTHOR"="Xteq Systems"
  24. "CONTACTURL"="http://www.xteq.com/"
  25. "COPYRIGHT"="Copyright ⌐ Xteq Systems - All Rights Reserved"
  26.  
  27.  
  28. ' Where all of the Find keys are installed:
  29. sP1="HKLM\Software\Microsoft\Windows\CurrentVersion\explorer\FindExtensions\Static\"
  30. sP2="HKLM\Software\Microsoft\Windows\CurrentVersion\explorer\FindExtensions\Static-\"
  31.  
  32. Dim iReg     'conatins how many are currently displayed in the UI
  33. Dim aryReg() 'contains all the registry keys
  34.  
  35. Sub Plugin_Initialize 
  36.  Call ReadRegistry
  37. End Sub
  38.  
  39. Sub ReadRegistry
  40.     'first, clear the UI
  41.     for l=1 to iReg
  42.         Call SetUIElement(l,"")
  43.     next 
  44.  
  45.  
  46.     '---------------------------------------
  47.     'read the active entries
  48.  
  49.     'read top level (Path\Path)
  50.     iItems=RegEnumPaths(sP1) 
  51.     dim aryTemp1
  52.     ReDim aryTemp1(iItems)
  53.  
  54.     For l=1 to iItems      
  55.         sItem=RegEnumElement(l)    
  56.         aryTemp1(l)=sP1 & sItem & "\"
  57.     next 
  58.  
  59.  
  60.     'now read the entires below
  61.     dim aryTemp2
  62.     ReDim aryTemp2(100) 'should be enough...
  63.     lSubItemCounter2=0
  64.  
  65.     for l=1 to iItems        
  66.         sPath=aryTemp1(l)
  67.         iSubItems=RegEnumPaths(sPath)
  68.         for i=1 to iSubItems
  69.             sItem=RegEnumElement(i)    
  70.             lSubItemCounter2=lSubItemCounter2+1 
  71.             aryTemp2(lSubItemCounter2)=sPath & sItem & "\"
  72.         next
  73.     next 
  74.  
  75.  
  76.     '---------------------------------------
  77.     'now read the deactivated items
  78.  
  79.  
  80.     'read top level (Path\Path)
  81.     iItems=RegEnumPaths(sP2) 
  82.     dim aryTemp3
  83.     ReDim aryTemp3(iItems)
  84.  
  85.     For l=1 to iItems      
  86.         sItem=RegEnumElement(l)    
  87.         aryTemp3(l)=sP2 & sItem & "\"
  88.     next 
  89.  
  90.  
  91.     'now read the entires below
  92.     dim aryTemp4
  93.     ReDim aryTemp4(100) 'should be enough...
  94.     lSubItemCounter4=0
  95.  
  96.     for l=1 to iItems        
  97.         sPath=aryTemp3(l)
  98.         iSubItems=RegEnumPaths(sPath)
  99.         for i=1 to iSubItems
  100.             sItem=RegEnumElement(i)    
  101.             lSubItemCounter4=lSubItemCounter4+1 
  102.             aryTemp4(lSubItemCounter4)=sPath & sItem & "\"
  103.         next
  104.     next 
  105.  
  106.  
  107.     '---------------------------------------
  108.     'okay, we now have two arrays (aryTemp2 and aryTemp4) that contain
  109.     'all the items that we need. We now simply need to create ONE array from those two
  110.  
  111.     iReg=lSubItemCounter2+lSubItemCounter4  
  112.     ReDim aryReg(iReg)
  113.     
  114.     for l=1 to lSubItemCounter2
  115.         aryReg(l)=aryTemp2(l)
  116.     next
  117.  
  118.     for i=1 to lSubItemCounter4
  119.         aryReg(lSubItemCounter2+i)=aryTemp4(i)
  120.     next 
  121.     
  122.    
  123.    '--------------------------------------- 
  124.    'finally, update the UI
  125.  
  126.    for l=1 to UBound(aryReg)
  127.        sItem=aryReg(l)
  128.  
  129.        sName=RegReadValue(sItem & "@")
  130.        if len(sName)=0 then
  131.           sName="<UNKNOWN>"
  132.        end if
  133.  
  134.        'remove stupid &..
  135.        sName=replace(sName,"&","")
  136.           
  137.        bActivated=0
  138.        if InStr(sItem,sP2)>0 then
  139.           bActivated=false
  140.        else
  141.           bActivated=true
  142.        end if
  143.  
  144.  
  145.        Call SetUIElement(l,sName)
  146.        Call SetUIElementEx(l,bActivated)
  147.    next
  148.    
  149. End Sub
  150.  
  151.  
  152.  
  153.  
  154. Sub Plugin_Apply(ElementIndex,ElementSubIndex)
  155.     bChanges=false
  156.  
  157.     for l=1 to UBound(aryReg)
  158.         sItem=aryReg(l)
  159.         bUI=GetUIElementEx(l)   
  160.   
  161.         if InStr(sItem,sP2)>0 then
  162.            bReg=false
  163.         else
  164.            bReg=true
  165.        end if
  166.  
  167.        'now check for differences between bReg and bUI
  168.        if bUI=true and bReg=true then
  169.            'do nothing, both activated
  170.         else
  171.            if bUI=false and bReg=false then
  172.               'do nothing, both deactivated
  173.            else
  174.  
  175.               if bUI=true and bReg=false then 
  176.                  'in UI activated, in REG Deactivated ->
  177.                  'move from <Static-> to <Static>
  178.                  sOldPath=sItem
  179.                  sNewPath=Replace(sOldPath,sP2,sP1) 
  180.               else                
  181.                  'in UI deactivated, in REG activated ->
  182.                  'move from <Static> to <Static->
  183.                  sOldPath=sItem
  184.                  sNewPath=Replace(sOldPath,sP1,sP2) 
  185.               end if  
  186.  
  187.               'DebugMsg sOldPath & " ** " & sNewPath
  188.  
  189.               'execute move action
  190.               Call MoveFolder(sOldPath,sNewPath)
  191.  
  192.               'set flag
  193.               bChanges=true
  194.            end if
  195.         end if
  196.  
  197.     next 
  198.  
  199.  
  200.     if bChanges=true then
  201.        Call ReadRegistry
  202.  
  203.        'call the holy Windows API
  204.        Call IndicateSettingChange()
  205.  
  206.        'just to be sure...        
  207.        'Call Logoff
  208.     end if
  209. End Sub
  210.  
  211.  
  212.  
  213. Sub MoveFolder(CurrentFolder,NewFolder)
  214.  if right(CurrentFolder,1)<>"\" then
  215.     CurrentFolder=CurrentFolder & "\"
  216.  end if
  217.  
  218.  if right(NewFolder,1)<>"\" then
  219.     NewFolder=NewFolder & "\"
  220.  end if
  221.  
  222.  'check for any existing subfolder
  223.  iC=RegEnumPaths(CurrentFolder)
  224.  
  225.  if iC>0 then        
  226.     Dim aryTemp()
  227.     ReDim aryTemp(iC)
  228.  
  229.     for i=1 to iC 
  230.         aryTemp(i)=RegEnumElement(i) & "\"
  231.     next
  232.  
  233.     for i=1 to iC
  234.         sP_Old=CurrentFolder & aryTemp(i)
  235.         sP_New=NewFolder & aryTemp(i)
  236.  
  237.         Call MoveFolder(sP_Old,sP_New)
  238.     next 
  239.  end if
  240.  
  241.  Call MoveValues(CurrentFolder,NewFolder)        
  242.  Call RegDeletePath(CurrentFolder)      
  243. End Sub
  244.  
  245.  
  246. Sub MoveValues(OldFolder,NewFolder)
  247.  
  248.  'check for "NORMAL" Values
  249.  iC=RegEnumValues(OldFolder)
  250.  for i=1 to iC
  251.      x_Name=RegEnumElement(i)
  252.      x_Type=RegValueType(OldFolder & x_Name)
  253.      x_Value=RegReadValue(OldFolder & x_Name)
  254.  
  255.      'move to new location
  256.      Call RegWriteValue(NewFolder & x_Name,x_Value,x_Type)
  257.  
  258.      'delete old value
  259.      Call RegDeleteValue(OldFolder & x_Name)
  260.  next 
  261.  
  262.  
  263.  'check for @ Value
  264.  x_Name="@"
  265.  if len(RegReadValue(OldFolder & x_Name))>0 then
  266.     x_Type=RegValueType(OldFolder & x_name)
  267.     x_Value=RegReadValue(OldFolder & x_Name)
  268.  
  269.     'move to new location
  270.     Call RegWriteValue(NewFolder & x_Name,x_Value,x_Type)
  271.  
  272.     'delete old value
  273.     Call RegDeleteValue(OldFolder & x_Name)
  274.  end if
  275.  
  276. End Sub
  277.  
  278.  
  279.  
  280. Sub Plugin_Terminate 
  281. End Sub
  282.